Telegram Group & Telegram Channel
ددلاک یا بن بست در سیستمهای همزمان: ریشه مشکل و راهکارهای پیشگیرانه

در طراحی و پیادهسازی سیستمهای کانکارنت یا مالتی ترد، یکی از خطراتی که میتواند عملکرد سیستم را مختل کند Deadlock است .وضعیتی که در آن چند واحد اجرایی مانند تر، پروسس یا گوروتین برای دسترسی به منابع مشترک، بهصورت دائمی منتظر یکدیگر میمانند و هیچکدام قادر به پیشروی نیستند.
تعریف دقیق Deadlock
طبق نظریه کافمن ددلاک زمانی رخ میدهد که این چهار شرط بهطور همزمان برقرار باشند

• منابع بهصورت انحصاری توسط یک واحد اجرایی نگهداری میشوند.
• یک واحد اجرایی منبعی را در اختیار دارد و منتظر منبع دیگری است.
• منابع نمیتوانند از یک واحد اجرایی گرفته شوند، مگر اینکه خودش آزاد کند.
• مجموعه ای از واحدهای اجرایی وجود دارد که هر کدام منتظر منبعی هستند که در اختیار دیگری است.

اگر حتی یکی از این چهار شرط شکسته شود، سیستم از deadlock در امان خواهد بود.


مثال ساده
فرض کنید ترد الف و ترد ب داریم:
الف ابتدا ریسورس اول را لاک می‌کند و سپس می‌خواهد ریسورس دوم را لاک کند.
هم‌زمان ترد ب ریسورس دوم را لاک کرده و منتظر ریسورس اول است.
در این حالت، هیچ‌کدام نمی‌توانند ادامه دهند. به این وضعیت Deadlock می‌گوییم

راهکارهای جلوگیری از Deadlock
۱. ترتیب یکسان در دسترسی به منابع (Lock Ordering)

طراحی سیستم به گونه‌ای که تمام واحدهای اجرایی منابع را به ترتیب مشخص و ثابتی قفل کنند. این روش ساده ولی بسیار مؤثر است و مانع از بروز شرایط Circular Wait می‌شود.

۲. استفاده از تایم‌اوت یا تلاش محدود برای گرفتن قفل (Timed Locking / Try-Lock)
در بسیاری از کتابخانه‌های کانکارنسی ، امکان تلاش برای گرفتن قفل به‌صورت غیرمسدودکننده یا با تایم‌اوت وجود دارد. اگر قفل گرفته نشد، می‌توان تصمیم گرفت که عقب‌نشینی کرده یا مسیر جایگزین طی شود.

۳. پیشگیری از شرط Hold and Wait
با طراحی مکانیزم‌هایی که یک واحد اجرایی فقط زمانی منابع را لاک کند که همه‌ی منابع مورد نیازش همزمان در دسترس هستند. این روش پیاده‌سازی دشوارتری دارد ولی مؤثر است.

۴. کاهش دانه‌بندی لاک‌ها (Lock Granularity)
کاهش تعداد منابع قفل‌شونده یا ترکیب آن‌ها در یک قفل واحد در شرایطی می‌تواند طراحی را ساده‌تر کند و احتمال بروز Deadlock را کاهش دهد.

۵. استفاده از ابزارهای تحلیل کانکارنسی
ابزارهایی مانند race detectors، lock order analyzers یا ابزارهای مدل‌سازی formal می‌توانند در تشخیص زودهنگام مسیرهای مستعد بن‌بست کمک کنند.

Deadlock نه تنها باعث توقف کامل بخشی از سیستم می‌شود، بلکه معمولاً به‌سختی در محیط تست بازتولید می‌شود و کشف آن نیازمند تحلیل دقیق رفتار زمان اجراست. در نتیجه، طراحی صحیح از ابتدا، مستندسازی لاک‌ها، و استفاده از الگوهای شناخته‌شده‌ی جلوگیری از بن‌بست، کلید مقابله با این مشکل هستند.

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir



tg-me.com/microfrontend_ir/348
Create:
Last Update:

ددلاک یا بن بست در سیستمهای همزمان: ریشه مشکل و راهکارهای پیشگیرانه

در طراحی و پیادهسازی سیستمهای کانکارنت یا مالتی ترد، یکی از خطراتی که میتواند عملکرد سیستم را مختل کند Deadlock است .وضعیتی که در آن چند واحد اجرایی مانند تر، پروسس یا گوروتین برای دسترسی به منابع مشترک، بهصورت دائمی منتظر یکدیگر میمانند و هیچکدام قادر به پیشروی نیستند.
تعریف دقیق Deadlock
طبق نظریه کافمن ددلاک زمانی رخ میدهد که این چهار شرط بهطور همزمان برقرار باشند

• منابع بهصورت انحصاری توسط یک واحد اجرایی نگهداری میشوند.
• یک واحد اجرایی منبعی را در اختیار دارد و منتظر منبع دیگری است.
• منابع نمیتوانند از یک واحد اجرایی گرفته شوند، مگر اینکه خودش آزاد کند.
• مجموعه ای از واحدهای اجرایی وجود دارد که هر کدام منتظر منبعی هستند که در اختیار دیگری است.

اگر حتی یکی از این چهار شرط شکسته شود، سیستم از deadlock در امان خواهد بود.


مثال ساده
فرض کنید ترد الف و ترد ب داریم:
الف ابتدا ریسورس اول را لاک می‌کند و سپس می‌خواهد ریسورس دوم را لاک کند.
هم‌زمان ترد ب ریسورس دوم را لاک کرده و منتظر ریسورس اول است.
در این حالت، هیچ‌کدام نمی‌توانند ادامه دهند. به این وضعیت Deadlock می‌گوییم

راهکارهای جلوگیری از Deadlock
۱. ترتیب یکسان در دسترسی به منابع (Lock Ordering)

طراحی سیستم به گونه‌ای که تمام واحدهای اجرایی منابع را به ترتیب مشخص و ثابتی قفل کنند. این روش ساده ولی بسیار مؤثر است و مانع از بروز شرایط Circular Wait می‌شود.

۲. استفاده از تایم‌اوت یا تلاش محدود برای گرفتن قفل (Timed Locking / Try-Lock)
در بسیاری از کتابخانه‌های کانکارنسی ، امکان تلاش برای گرفتن قفل به‌صورت غیرمسدودکننده یا با تایم‌اوت وجود دارد. اگر قفل گرفته نشد، می‌توان تصمیم گرفت که عقب‌نشینی کرده یا مسیر جایگزین طی شود.

۳. پیشگیری از شرط Hold and Wait
با طراحی مکانیزم‌هایی که یک واحد اجرایی فقط زمانی منابع را لاک کند که همه‌ی منابع مورد نیازش همزمان در دسترس هستند. این روش پیاده‌سازی دشوارتری دارد ولی مؤثر است.

۴. کاهش دانه‌بندی لاک‌ها (Lock Granularity)
کاهش تعداد منابع قفل‌شونده یا ترکیب آن‌ها در یک قفل واحد در شرایطی می‌تواند طراحی را ساده‌تر کند و احتمال بروز Deadlock را کاهش دهد.

۵. استفاده از ابزارهای تحلیل کانکارنسی
ابزارهایی مانند race detectors، lock order analyzers یا ابزارهای مدل‌سازی formal می‌توانند در تشخیص زودهنگام مسیرهای مستعد بن‌بست کمک کنند.

Deadlock نه تنها باعث توقف کامل بخشی از سیستم می‌شود، بلکه معمولاً به‌سختی در محیط تست بازتولید می‌شود و کشف آن نیازمند تحلیل دقیق رفتار زمان اجراست. در نتیجه، طراحی صحیح از ابتدا، مستندسازی لاک‌ها، و استفاده از الگوهای شناخته‌شده‌ی جلوگیری از بن‌بست، کلید مقابله با این مشکل هستند.

〰️〰️〰️〰️〰️〰️
© | @microfrontend_ir

BY Microfrontend.ir


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/microfrontend_ir/348

View MORE
Open in Telegram


Microfrontend ir Telegram | DID YOU KNOW?

Date: |

What is Telegram?

Telegram’s stand out feature is its encryption scheme that keeps messages and media secure in transit. The scheme is known as MTProto and is based on 256-bit AES encryption, RSA encryption, and Diffie-Hellman key exchange. The result of this complicated and technical-sounding jargon? A messaging service that claims to keep your data safe.Why do we say claims? When dealing with security, you always want to leave room for scrutiny, and a few cryptography experts have criticized the system. Overall, any level of encryption is better than none, but a level of discretion should always be observed with any online connected system, even Telegram.

Telegram hopes to raise $1bn with a convertible bond private placement

The super secure UAE-based Telegram messenger service, developed by Russian-born software icon Pavel Durov, is looking to raise $1bn through a bond placement to a limited number of investors from Russia, Europe, Asia and the Middle East, the Kommersant daily reported citing unnamed sources on February 18, 2021.The issue reportedly comprises exchange bonds that could be converted into equity in the messaging service that is currently 100% owned by Durov and his brother Nikolai.Kommersant reports that the price of the conversion would be at a 10% discount to a potential IPO should it happen within five years.The minimum bond placement is said to be set at $50mn, but could be lowered to $10mn. Five-year bonds could carry an annual coupon of 7-8%.

Microfrontend ir from id


Telegram Microfrontend.ir
FROM USA